#include <stdio.h>

int main()
{
    int a,n;
    
    //  ~按位取反
    //  &按位与运算 对某些位进行清除（0）操作 对 a 第八位取反
    a &= ~0xF;
    a &= ~(1 << n); //对任意整数 a 第 n 位清零（n从0开始）
    a &= ~(0x3f << 11);  //对任意整数 a 第 11-16 位清零(Reset)，其他位置保持不变。
    
    //  |按位或运算 对某些位进行置位（1）操作 对 a 第3位
    a |= 1 << n;   //对任意整数 a 的第 n位置位（Set） 
    a |= 0x3f << 11;    //对任意整数 a 的第11-16位都置位，其他位保存不变

    a = (a & (~(0xf << 11))) | (0x5 << 11);
    //  ^ 异或运算 与0异或（本身）、与1异或（翻转）
    a ^= 1 << n;    //将任意整数 x 的第 n 位翻转。

    printf("%d\n", -1 >> 1);
    // -1 为全1，算术右移补1，逻辑右移补0
    //输出为 -1 算术
    return 0;
}